On embedded, and thus, resource-limited devices, updating to add new functionality and bug fixing becomes more and more necessary. Typically, a storage device, such as a network-attached storage (NAS), is constructed as a specialized computer or appliance. Normally, such devices use low-power hardware and having an embedded operating system, such as LINUX™, that is configured specifically as a storage device.
Today, due to their increasing complexity, storage devices now run software to implement their various features and manage their interactions with other devices. Unfortunately, the software for each storage device is custom built and integrated into a single package with the operating system. This form of software development is difficult and often results in bugs, etc.